声学回声消除(Acoustic Echo Cancellation)原理与实现 您所在的位置:网站首页 回音消除芯片 杭州 声学回声消除(Acoustic Echo Cancellation)原理与实现

声学回声消除(Acoustic Echo Cancellation)原理与实现

2024-07-12 01:45| 来源: 网络整理| 查看: 265

Acoustic Echo Cancellation 回声分类电路回声声学回声 AEC的基本原理回声消除常用方法 自适应滤波器的基本原理回声消除常用算法LSM算法LMS算法实现 NLMS算法NLMS算法实现 NSAF算法 MATLAB代码实现房间脉冲响应近端语音信号远端语音信号麦克风信号频域自适应滤波器(FDAF)回声回波增强(ERLE)不同步长值的影响回声回波损耗增强比较使用分区减少延迟 开源的音频处理库Speex:开源语音编解码器Opus互动音频编解码器WebRTC(实时通信) 参考

回声就是声音信号经过一系列反射之后,又听到了自己讲话的声音,这就是回声。一些回声是必要的,比如剧院里的音乐回声以及延迟时间较短的房间回声;而大多数回声会造成负面影响,比如在有线或者无线通信时重复听到自己讲话的声音(回想那些年我们开黑打游戏时,如果其中有个人开了外放,他的声音就会回荡来回荡去)。因此消除回声的负面影响对通信系统是十分必要的。

针对回声消除(Acoustic Echo Cancellation,AEC )问题,现如今最流行的算法就是基于自适应滤波的回声消除算法。本文从回声信号的两种分类以及 AEC 的基本原理出发,介绍几种经典的 AEC 算法并对其性能进行阐释。 本文是奔着边学便抄的态度,摘录自声学回声消除(Acoustic Echo Cancellation)原理与实现,原文写的很好,相关博客也很精彩。

回声分类

在通信系统中,回声主要分为两类:电路回声和声学回声

电路回声

电路回声通常产生于有线通话中,为了降低电话中心局与电话用户之间电话线的价格,用户间线的连接采用两线制;而电话中心局之间连接采用四线制(上面两条线路用于发送给用户端信号,下面两条线路用于接收用户端信号)。问题就出来了,造成电路回声的根本原因是转换混合器的二线-四线阻抗不能完全匹配(使用的不同型号的电线或者负载线圈没有被使用的原因),导致混合器 接收线路 上的语音信号流失到了 发送线路 ,产生了回声信号,使得另一端的用户在接收信号的同时听到了自己的声音。电路回声产生原理如下图: 电路回声产生原理 在现如今的数字通信网络中,转换混合器与数模转换器融为一体,但无论是模拟电子线路还是数字电子线路,二-四线的转换都会造成阻抗不匹配问题,从而导致其产生电路回声,影响现代通信质量。由于电路回声的线性以及稳定性,用一个简单的线性叠加器就可以实现电路回声消除。首先将产生的回声信号在数值上取反,线性地叠加在回声信号上,将产生的回声信号抵消,实现电路回声的初步消除。然而由于技术缺陷,线性叠加器不能完整地将回声信号抹去,因此需要添加一个非线性处理器,其实质是一个阻挡信号的开关,将残余的回声信号经过非线性处理之后,就可以实现电路回声的消除,或者得到噪声很小的静音信号。由于电路回声信号是线性且稳定的,所以比较容易将其消除,而本文主要研究的是如何消除非线性的声学回声。 在这里插入图片描述

声学回声

在麦克风与扬声器互相作用影响的双工通信系统中极易产生声学回声。如下图所示 远端讲话者A–>麦克风A–>电话A–>电话B---->扬声器B—>麦克风B–>电话B–>电话A–>扬声器A—>麦克风A—>…就这样无限循环。 在这里插入图片描述 详细讲解:远端讲话者A的话语被麦克风采集并传入至通信设备,经过无线或有线传输之后达到近端的通信设备,并通过近端 B 的扬声器播放,这个声音又会被近端 B 的麦克风拾取至其通信设备形成声学回声,经传输又返回了远端 A 的通信设备,并通过远端 A 的扬声器播放出来,从而远端讲话者就听到了自己的回声。 近端语音信号:说话人说话 被近端麦克风采集的信号。 在这里插入图片描述 远端语音信号:远端的语音信号通过近端扬声器播放,与房间的回声路径卷积后 被近端麦克风采集到的语音信号。 在这里插入图片描述 声学回声信号根据传输途径的差别可以分别直接回声信号和间接回声信号。

直接回声:近端扬声器B将语音信号播放出来后,近端麦克风B直接将其采集后得到的回声。直接回声不受环境的印象,与扬声器到麦克风的距离及位置有很大的关系,因此直接回声是一种线性信号。

间接回声:近端扬声器B将语音信号播放出来后,语音信号经过复杂多变的墙面反射后由近端麦克风B将其拾取。间接回声的大小与房间环境、物品摆放以及墙面吸引系数等等因素有关,因此间接回声是一种非线性信号。

回声消除技术主要用于在免提电话、电话会议系统等情形中。

AEC的基本原理 回声消除常用方法 声场环境材料处理 墙壁、天花板换成吸音材料,有效的较少声音的反射,可以较为直接的抑制间接噪声,但是直接噪声无法抑制;成本较高 回声抑制器 通过一个电平对比单元 轮流打开和关闭扬声器和麦克风导致功放设备的输出信号不连续,总体效果不好 自适应回声抵消(用的最多) 首先通过自适应算法来调整滤波器的迭代更新系数来估计出与实际回声路径逼近的期望信号,也就是模拟回声,然后从麦克风采集的混合信号中减去这个模拟回声,达到回声抵消的功能

如今解决 AEC 问题最常用的方法,就是:

使用不同的自适应滤波算法调整滤波器的权值向量,估计一个近似的回声路径来逼近真实回声路径,从而得到估计的回声信号,并在纯净语音和回声的混合信号中除去此信号来实现回声的消除。

AEC的基本原理如下图: 在这里插入图片描述 x ( n ) x(n) x(n) 为远端输入信号,经过未知的回声路径 w ( n ) w(n) w(n)得到 y ( n ) = x ( n ) ∗ w ( n ) y(n)=x(n)∗w(n) y(n)=x(n)∗w(n),再加上观测噪声 v ( n ) v(n) v(n),得到期望信号 d ( n ) = y ( n ) + v ( n ) d(n)=y(n)+v(n) d(n)=y(n)+v(n)。 x ( n ) x(n) x(n)通过自适应滤波器 w ^ ( n ) \hat{w}(n) w^(n)得到估计的回声信号,并与期望信号 d ( n ) d(n) d(n)相减得到误差信号 e ( n ) e(n) e(n),即 e ( n ) = d ( n ) − w ^ T ( n ) x ( n ) e(n)=d(n)−\hat{w}^T(n)x(n) e(n)=d(n)−w^T(n)x(n),误差信号的值越小说明自适应滤波算法所估计的回声路径就越接近实际的回声路径。

滤波器采用特定的自适应算法不停地调整权值向量,使估计的回声路径 w ^ ( n ) \hat{w}(n) w^(n)逐渐趋近于真实回声路径 w ( n ) w(n) w(n)。显然,在AEC问题中,自适应滤波器的选择对回声消除的性能好坏起着十分关键的作用。

自适应滤波器的基本原理

自适应滤波器是一个对输入信号进行处理并不停学习,直到其达到期望值的器件。自适应滤波器在输入信号非平稳条件下,也可以根据环境不断调节滤波器权值向量,使算法达到特定的收敛条件,从而实现自适应滤波过程。

自适应滤波器按输入信号类型可分为模拟滤波器和离散滤波器,本文中使用的是离散滤波器中的数字滤波器(数字滤波器按结构可划分为输入不仅与过去和当前的输入有关、还与过去的输出有关的无限冲激响应滤波器(IIR),以及输出与有限个过去和当前的输入有关的有限冲激响应滤波器(FIR))为了使得自适应滤波器具有更强的稳定性,并且具有足够的滤波器系数可以用来调整以达到特定的收敛准则,一般选取横向的 FIR 滤波器进行来进行回声的消除。(解释:无限冲激响应类型的优势在于零极点都包含于传递函数中,所以 IIR 能够实现较低的阶数构造较为理想化的尖锐带通特性的传递函数,而劣势也很明显,即极点会造成量化误差大,使系统鲁棒性下降,并且对相位特性的控制变得困难;FIR(有限冲击响应滤波器)的传递函数都是零点,所以鲁棒性很稳定,相对而言更能实现线性特性) 在这里插入图片描述 x ( n ) x(n) x(n)是远端输入信号, w ^ i ( n ) \hat{w}_i(n) w^i​(n)是滤波器系数,其中 i = 0 , 1 , . . . , L − 1 i=0,1,...,L−1 i=0,1,...,L−1, L L L为滤波器的长度, n n n为采样点数, w ^ ( n ) \hat{w}(n) w^(n)为滤波器的权值向量且 w ^ ( n ) = [ w ^ 0 ( n ) , w ^ 1 ( n ) , . . . w ^ L − 1 ( n ) ] T \hat{w}(n)=[\hat{w}_0(n),\hat{w}_1(n),...\hat{w}_{L-1}(n)]^T w^(n)=[w^0​(n),w^1​(n),...w^L−1​(n)]T ,根据误差信号 e ( n ) = d ( n ) − w ^ T ( n ) x ( n ) e(n)=d(n)−\hat{w}^T(n)x(n) e(n)=d(n)−w^T(n)x(n)的值以及不同算法的收敛准则调整滤波器的权值向量。

然而自适应滤波算法的选择从根本上决定了回声消除的效果是否良好,接下来将介绍几种解决 AEC 问题的经典自适应滤波算法。

回声消除常用算法 LSM算法

通过上面AEC的基本原理我们知道了误差信号 e ( n ) e(n) e(n)等于期望信号减去滤波器输出信号:

e ( n ) = d ( n ) − w ^ T ( n ) x ( n ) e(n)=d(n)−\hat{w}^T(n)x(n) e(n)=d(n)−w^T(n)x(n)

运用最小均方误差准则,通过对其求导并令其等于0,求到使得误差 ∣ e ( n ) ∣ 2 |e(n)|^2 ∣e(n)∣2最小时的 w w w—— ∣ e ( n ) ∣ |e(n)| ∣e(n)∣在最小点不可导,所以使用的是 ∣ e ( n ) ∣ 2 |e(n)|^2 ∣e(n)∣2,对于LMS算法,其滤波器系数迭代公式为

w ( n + 1 ) = w ( n ) + μ ∂ e ( n ) 2 ∂ w = w ( n ) + 2 μ e ( n ) ∂ ( d ( n ) − w ∗ x ( n ) ) ∂ w = w ( n ) + 2 μ e ( n ) x ( n ) w(n+1)=w(n)+μ\frac{∂e(n)^2}{∂w}=w(n)+2μe(n)\frac{∂(d(n)−w∗x(n))}{∂w}=w(n)+2μe(n)x(n) w(n+1)=w(n)+μ∂w∂e(n)2​=w(n)+2μe(n)∂w∂(d(n)−w∗x(n))​=w(n)+2μe(n)x(n)

式中, μ μ μ为固定步长因子, μ μ μ的大小很大程度上决定了算法的收敛与稳态性能。 μ μ μ越大,算法收敛越快,但稳态误差也越大; μ μ μ越小,算法收敛越慢,但稳态误差也越小。为保证算法稳态收敛,应使 μ μ μ在以下范围取值:

0 < μ < 2 ∑ i = 1 N x ( i ) 2 0



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有